package com.hspedu.map_;

import java.util.*;

/**
 * @author DL5O
 * @version 1.0
 */
@SuppressWarnings("all")
public class ManFor {
    public static void main(String[] args) {
        Map map = new HashMap();
        map.put("邓超","孙俪");
        map.put("王宝强","马蓉");
        map.put("宋喆","马蓉");
        map.put("刘令博",null);
        map.put(null,"刘亦菲");
        map.put("鹿晗","关晓彤");

        /*//第一组：先取出 所有的key ， 通过key取出对应的Value
        Set keyset = map.keySet();
        System.out.println(keyset.getClass());

        //(1)增强for
        System.out.println("-----第一种方式-----");
        for (Object key : keyset){
            //get(key) 得到对应key 的value值,根据键获取值
            System.out.println(key + "-" + map.get(key));
        }


        //(2)使用迭代器
        System.out.println("-----第二种方式-----");
        Iterator iterator = keyset.iterator();
        while (iterator.hasNext()) {
            Object key =  iterator.next();
            System.out.println(key.getClass());
            System.out.println(key + "-" + map.get(key));
        }*/

      /*  //第二组:把所有的values取出，使用map.values取出来即可
        Collection values = map.values();
        //这里可以使用所有的Collection使用遍历方法

        //(1) 增强for
        System.out.println("---取出所有的value(增强for)---");
        for (Object o :values) {
            System.out.println(o);
        }

        //(2) 迭代器
        System.out.println("---取出所有的value(迭代器)---");
        Iterator iterator2 = values.iterator();
        while(iterator2.hasNext()){
            Object value = iterator2.next();
            System.out.println(value);
        }*/

        //第三组:通过EntrySet 来获取 k-v
        Set entrySet = map.entrySet();//EntrySet<Map.Entry<K,V>>
        System.out.println(entrySet.getClass());//class java.util.HashMap$EntrySet
        //（1）增强for
        System.out.println("----使用EntrySet增强(第三种)----");
        for (Object entry: entrySet){
            //将entry对象转成一个Map.Entry
            Map.Entry m =(Map.Entry) entry;
            System.out.println(m.getKey() + "-" + m.getValue());
        }


        //(2)迭代器
        Iterator iterator3 = entrySet.iterator();
        while (iterator3.hasNext()) {
            Object entry =  iterator3.next();
            //System.out.println(next.getClass());//一个一个的hashMap$Node 实现了Map.Entry(使用getK ， getV)
            //向下转型 HashMap$Node
            Map.Entry m= (Map.Entry) entry;
            System.out.println(m.getKey() + "-" + m.getValue());
        }
    }
}
